type area = { name: string; code: string; children?: area[] };

// parse.js
import fs from 'node:fs';

// 读取原始文本
const raw = fs.readFileSync('raw.txt', 'utf8');

// 按行切分并去掉空白首尾
const lines = raw
  .split(/\r?\n/)
  .map((l) => l.trim())
  .filter(Boolean);

const areas: area[] = []; // 根数组
let curProv: area | null; // 当前省
let curPref: area | null; // 当前地级市/自治州

lines.forEach((line) => {
  // 行政区划代码 + 名称   （允许若干空格或中文空格）
  const m = line.match(/^(\d{6})\s+(.+)$/);
  if (!m) return; // 解析失败跳过
  const [, code, name] = m;

  const level = code.slice(-4); // 后4位
  if (level === '0000') {
    // 省级
    curProv = { name, code, children: [] };
    areas.push(curProv);
    curPref = null;
  } else if (level.endsWith('00')) {
    // 地级
    curPref = { name, code, children: [] };
    if (curProv?.children) curProv.children.push(curPref);
  } else {
    // 县级
    const child = { name, code };
    if (curPref?.children) {
      curPref.children = curPref.children || [];
      curPref.children.push(child);
    } else if (curProv) {
      // 省直辖县（如济源市）
      curProv.children = curProv.children || [];
      curProv.children.push(child);
    }
  }
});

// 输出 JSON
fs.writeFileSync('areas.json', JSON.stringify(areas, null, 2));
console.log('✅ areas.json 已生成');
